Nginx保姆级入门

您所在的位置:网站首页 nginx反向代理跨域出现no access Nginx保姆级入门

Nginx保姆级入门

2024-06-03 18:38| 来源: 网络整理| 查看: 265

本文适用于开发人员学习运维领域知识,主要内容为在个人理解的基础上对企业级开发中所使用的Nginx相关概念的详解,并附上了Nginx部署完成之后的相关配置的操作方式,感谢阅读。

文章目录 1.为什么使用Nginx2.正向代理与反向代理的区别2.1 正向代理2.2 反向代理 3.Nginx的配置使用4.Nginx有什么作用4.1 反向代理4.2 负载均衡4.3 HTTP服务器(动静分离)

1.为什么使用Nginx

首先,我们知道,为了系统的高可用,我们的系统一般会部署多个实例,即如下图所示,项目部署于多个服务器上。

但是,这样是存在问题的,我们应该要对用户屏蔽掉这一信息。因为我们是不可能安排好每个用户在特定时刻去访问特定的服务器。这明显是行不通的,首先,用户无法记住这么多的服务器地址,其次,系统管理者难以管理运营。

以百度为例,百度的后台肯定是不止一台服务器的,但我们在访问百度的时候,只需要输入百度的地址,就会被分配到一个服务器上去,以获得服务。

而我们访问的是哪个服务器我们并不知道,我们只管访问www.baidu.com,后面的事都会有相应的机制帮我们实现。

在这里插入图片描述

要实现此类效果,即无论应用有多少实例,我们只需要访问一个地址就可以得到服务。就需要在客户端与服务端之间加上一层服务器。客户端只管访问这一中介服务器(中介服务器的地址是确定的),再由中介服务器将请求代理到真正部署有实例的服务器上去即可。 2.正向代理与反向代理的区别 2.1 正向代理

正向代理就是代理客户端,客户是可以感受到它的存在的。

其实我们平时是接触到了很多正向代理的,正向代理就是我们在没有权限访问某些服务器或者速率很慢时,通过代理服务器代表我们去访问,而代理服务器常常是有能力、有权限达到目的的。

下面进行举例:

我们在校外、公司外,是访问不到学校、公司的内网的,但是我们想要访问内网资源时,会用到VPN。而一般内网会存在一个VPN服务器,我们使用VPN其实就是让内网的VPN服务器代替我们去进行访问(VPN服务器位于内网是可以访问内网资源的)。这其实就是一种正向代理,通过内网VPN服务器代理客户端进行请求。我们在玩一些服务器部署在国外的游戏时(如:吃鸡),延迟会很长,此时,我们会“翻墙”,以此来提升速率。其实,这种方式与上一例是一样的逻辑。同样是让延迟低的服务器代理我们去访问,以提升速率。

在这里插入图片描述

2.2 反向代理

反向代理就是代理服务端,是客户感受不到的。

而反向代理的应用场景则就是对上述的多实例的情况的处理。使用一台代理服务器(下图中的深色服务器)对底层的应用服务器(下图中的浅色服务器)进行代理。将他们的地址信息对客户端屏蔽,客户端只需要访问代理服务器即可,代理服务器会将请求转发给底层的真正起作用的应用服务器。但在客户端眼里,服务器只有唯一的一台,就是代理服务器。

在这里插入图片描述

3.Nginx的配置使用

首先,需要安装Nginx,此处博主就不进行讲解了,大家可以去查阅相关教程。 博主使用的是Linux,Windows的路径存在差异,请大家进行变更

首先,要使用Nginx,就需要进行配置,于是,我们进入其配置文件 vim /etc/nginx/nginx.conf 如下就是博主的配置文件的内容: http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; upstream myserver { server 192.168.240.110:8080 max_fails=3 fail_timeout=30s weight=1; server 192.168.240.111:8080 max_fails=3 fail_timeout=30s weight=1; } server { listen 80; server_name 192.168.240.240; location / { proxy_pass http://myserver; } } } 大家最应该关注的应该就是下图所示的内容:

在这里插入图片描述 下面进行讲解:

1.首先,对于upstream,里面配置的是应用服务器的信息,其中包括了应用服务器的地址。 2.而max_fails是设置Nginx与服务器通信的尝试失败的次数。在fail_timeout参数定义的时间段内,如果失败的次数达到此值,Nginx就认为服务器不可用。在下一个fail_timeout时间段,服务器不会再被尝试使用。等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功。 3.weight值表示权重,权重越大,被分配到请求的可能性也越大。

1.server中则是对代理服务器进行配置。listen是其监听的端口号,而HTTP的默认端口号就是80,所以,当监听端口号为80的时候,就不需要在请求路径中加上端口号。 2.而后则是代理服务器的地址,以及接受请求的路径(“/”则表示根路径)。 3.proxy_pass表示将请求代理到后面的“http://myserver”代表的路径

4.Nginx有什么作用 4.1 反向代理 即本文所讲述的功能,Nginx可以作为应用服务器的代理服务器。 4.2 负载均衡 实则在上述的配置文件中也有所体现,即所配置的权重,权重会影响请求被分发到该服务器的概率,权重越大,被分发请求的概率越大。 4.3 HTTP服务器(动静分离) 我们的项目中是存在很多静态资源的,它们不会因项目运行而发送变化,所以可以缓存在Nginx本地,加快访问速度。

其实还有例如:虚拟主机等功能。但上述功能是最为常用的功能,所以仅对上述功能进行简单阐述。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3